﻿// 365. GCD and LCM（挑战程序设计竞赛）.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>


using namespace std;


/*
https://www.papamelon.com/problem/365

给定两个整数
a,b，计算它们的最大公约数（GCD）和最小公倍数（LCM）。

输入
多组册数数据，以 EOF 结束
每组测试数据占据一行，用空格隔开的两个整数
a,b(0<a,b≤2,000,000,000)
数据保证 LCM 小于等于
2,000,000,000
测试数据组数不超过50 组

输出
每组测试数据输出一行，两个整数，用空格隔开，分别表示 GCD 和 LCM
样例 1
输入
8 6
50000000 30000000
输出
2 24
10000000 150000000
*/

int a,b;

int gcd(int a, int b) {
	if (b == 0) {
		return a;
	}

	return gcd(b, a % b);
}


int main()
{
	while (cin >> a >> b) {
		cout << gcd(a, b) << " ";
		cout << a / gcd(a, b) * b << endl;
	}
}
 